package com.zp.self.module.level_4_算法练习.数据结构.hash表;
import org.junit.Test;

import java.util.HashSet;
import java.util.Set;

/**
 * @author By ZengPeng
 */
public class 力扣_884_两句话中的不常见单词 {
    @Test
    public void main() {
        
        Solution solution = new 力扣_884_两句话中的不常见单词().new Solution();
        System.out.println(solution.uncommonFromSentences("this apple is sweet","this apple is sour"));
    }

    /**
     题目：句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
        如果某个单词在其中一个句子中恰好出现一次，在另一个句子中却 没有出现 ，那么这个单词就是 不常见的 。
        给你两个 句子 s1 和 s2 ，返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。

     示例 1：
     输入：s1 = "this apple is sweet", s2 = "this apple is sour"
     输出：["sweet","sour"]

     示例 2：
     输入：s1 = "apple apple", s2 = "banana"
     输出：["banana"]

     分析：【P 💖】
        1.Set集合存储，再遍历:只要你出现了两次就行
                --执行耗时:2 ms,击败了98.29% 的Java用户
                --编码耗时:15:27

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String[] uncommonFromSentences(String s1, String s2) {
        String[] arrayS1 = s1.split(" ");
        String[] arrayS2 = s2.split(" ");
        Set<String> set1 = new HashSet<>();
        Set<String> temp = new HashSet<>();
        for (String s : arrayS1) {
            if(set1.contains(s))
                temp.add(s);
            else
                set1.add(s);
        }

        for (String s : arrayS2) {
            if(set1.contains(s))
                temp.add(s);
            else
                set1.add(s);
        }

        for (String s : temp)
            set1.remove(s);
        return set1.toArray(new String[0]);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}